package com.jg.visitor.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jg.visitor.common.bean.DaySettingBean;
import com.jg.visitor.common.bean.PageDTO;
import com.jg.visitor.common.bean.UploadUserBeanInfo;
import com.jg.visitor.controller.dto.UserDTO;
import com.jg.visitor.controller.dto.UserDetailDTO;
import com.jg.visitor.controller.vo.*;
import com.jg.visitor.domain.User;
import com.jg.visitor.domain.VisitorInfo;
import org.springframework.web.multipart.MultipartFile;


/**
* @author 陈前进
*/
public interface UserService extends IService<User> {

    /**
     * 手动账号密码登录
     */
    UserDTO login(UserLoginVO userVO);

    /**
     * 进入微信时自动openId登录
     */
    UserDTO wxLogin(String jsCode);

    /**
     * 根据openId信息创建DTO信息
     */
    UserDTO getUserDTObyOpenId(String openId);

    /**
     * 根据小程序code获取用户的openid
     */
    String getOpenIdByJsCode(String jsCode);

    /**
     * 发送微信模板消息
     */
    void sendWechatTemplateMsg(WxTemplateMsgVO templateMsgVO);

    /**
     * 获取微信全局token
     */
    String getGlobalAccessToken();

    /**
     * 根据访客信息创建DTO信息
     */
    UserDTO buildVisitorDTO(VisitorInfo visitorInfo);

    /**
     * 根据用户信息创建DTO信息
     */
    UserDTO buildUserDTO(User userInfo);

    /**
     * 校驗用戶手機是否存在
     */
    boolean getTel(String iphone);

    /**
     * 查询管理员设置的访客最大选择时间范围
     */
    DaySettingBean selectMaxConfigTime();

    /**
     * 管理员根据条件查询用户
     */
    PageDTO<UserDetailDTO> adminSelectUserByCondition(AdminQueryVO adminQueryVO);

    /**
     * 管理员添加或者编辑用户
     */
    void addOrEditAccount(AdminUserVO adminQueryVO);

    /**
     * 管理员根据id删除用户
     */
    boolean deleteAccount(Long userId);

    /**
     * 管理员或者被访者安全员修改个人信息
     */
    UserDTO updateSelfInfo(EditUserVO vo);

    /**
     * 管理员或上传用户excel信息
     */
    String uploadBatchUser(MultipartFile file);

    void addSingleRequestData(UploadUserBeanInfo data);
}
